public class Test4 {
	public static void main(String[] args) {
		String str = "a12中国3@b&4语*言 3c";    //需要被统计的字符串
		String E1 = "[\u4e00-\u9fa5]";              //汉字的正则表达式
		String E2 = "[a-zA-Z]";                    //英文字母的正则表达式
		String E3 = "[0-9]";                       //数字的正则表达式
		String E4 = "\\s+";                        //空格的正则表达式
		int chineseCount = 0;                      //初始化统计汉字的变量
		int englishCount = 0;                      //初始化统计英文字母的变量
		int numberCount = 0;                      //初始化统计数字的变量
		int spaceCount = 0;                        //初始化统计空格的变量
		String temp;                              //定义临时变量temp
		for (int i = 0; i < str.length(); i++)             //遍历字符串中的字符
		{    
			//取出字符串中的单一字符并转成字符串
			temp=String.valueOf(str.charAt(i));
			//通过if…else语句统计不同字符的数量
			if (temp.matches(E1))
			{  chineseCount++;  }else  
			if (temp.matches(E2))    
			{  englishCount++;  }else  
			if (temp.matches(E3))    
			{  numberCount++;  }else
			if(temp.matches(E4))
			{  spaceCount++;  }
		}    
		System.out.println("汉字数:" + chineseCount);
		System.out.println("英文数:" + englishCount);
		System.out.println("数字数:" + numberCount);
		System.out.println("特殊字符:" + (str.length() - 
					   (chineseCount + englishCount + numberCount+spaceCount))); 
		System.out.println("空格:"+spaceCount);
	}
}